home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Development / Interfaces / QD3DPascalInterfaces / QD3DIO.p < prev    next >
Encoding:
Text File  |  1996-11-15  |  18.2 KB  |  420 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DIO.p
  3.  
  4.      Contains:    QuickDraw 3D IO API                                                
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.0.6
  7.                  Release:    Universal Interfaces 2.1.5d1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3DIO;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3DIO__}
  28. {$SETC __QD3DIO__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DIOIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __QD3D__}
  35. {$I QD3D.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QD3DDRAWCONTEXT__}
  38. {$I QD3DDrawContext.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QD3DVIEW__}
  41. {$I QD3DView.p}
  42. {$ENDC}
  43.  
  44. {$PUSH}
  45. {$ALIGN POWER}
  46. {$LibExport+}
  47.  
  48. {
  49. *****************************************************************************
  50.  **                                                                              **
  51.  **                                    Basic Types                                 **                                                    
  52.  **                                                                              **
  53.  ****************************************************************************
  54. }
  55.  
  56. TYPE
  57.     TQ3Uns8                                = UInt8;
  58.     TQ3Int8                                = SInt8;
  59.     TQ3Uns16                            = INTEGER;
  60.     TQ3Int16                            = INTEGER;
  61.     TQ3Uns32                            = LONGINT;
  62.     TQ3Int32                            = LONGINT;
  63.     TQ3Uns64Ptr = ^TQ3Uns64;
  64.     TQ3Uns64 = RECORD
  65.         hi:                        LONGINT;
  66.         lo:                        LONGINT;
  67.     END;
  68.  
  69.     TQ3Int64Ptr = ^TQ3Int64;
  70.     TQ3Int64 = RECORD
  71.         hi:                        LONGINT;
  72.         lo:                        LONGINT;
  73.     END;
  74.  
  75.     TQ3Float32                            = Single;
  76.     TQ3Float64                            = Double;
  77.     TQ3Size                                = TQ3Uns32;
  78. {
  79. *****************************************************************************
  80.  **                                                                              **
  81.  **                                    File Types                                 **
  82.  **                                                                              **
  83.  ****************************************************************************
  84. }
  85.     TQ3FileModeMasks             = LONGINT;
  86. CONST
  87.     kQ3FileModeNormal            = {TQ3FileModeMasks}0;
  88.     kQ3FileModeStream            = {TQ3FileModeMasks}$01;
  89.     kQ3FileModeDatabase            = {TQ3FileModeMasks}$02;
  90.     kQ3FileModeText                = {TQ3FileModeMasks}$04;
  91.  
  92.  
  93. TYPE
  94.     TQ3FileMode                            = LONGINT;
  95. {
  96. *****************************************************************************
  97.  **                                                                              **
  98.  **                                    Method Types                             **
  99.  **                                                                              **
  100.  ****************************************************************************
  101. }
  102. {
  103.  *    IO Methods
  104.  *
  105.  *    The IO system treats all objects as groups of typed information.
  106.  *    When you register your element or attribute, the "elementType" is the 
  107.  *    binary type of your object, the "elementName" the ascii type.
  108.  *    
  109.  *    All objects in the metafile are made up of a "root" or parent object which
  110.  *    defines the instantiated object type. You may define the format of your 
  111.  *    data any way you wish as long as you use the primitives types above and the
  112.  *    routines below.
  113.  *
  114.  *    Root Objects are often appended with additional child objects, called 
  115.  *    subobjects. You may append your object with other QuickDraw 3D objects.
  116.  *    
  117.  *    Writing is straightforward: an object traverses itself any other objects 
  118.  *    that make it up, then writes its own data. Writing uses two methods: 
  119.  *    TQ3ObjectTraverseMethod and TQ3ObjectWriteMethod.
  120.  *
  121.  *    The TQ3ObjectTraverseMethod method should:
  122.  *    + First, Determine if the data should be written 
  123.  *        - if you don't want to write out your object after examining your
  124.  *            data, return kQ3Success in your Traverse method without calling
  125.  *            any other submit calls.
  126.  *     + Next, calculate the size of your object on disk
  127.  *     + Gather whatever state from the view you need to preserve
  128.  *         - you may access the view state NOW, as the state of the
  129.  *             view duing your TQ3ObjectWriteMethod will not be valid. You may
  130.  *             pass a temporary buffer to your write method.
  131.  *     + Submit your view write data using Q3View_SubmitWriteData
  132.  *         - note that you MUST call this before any other "_Submit" call.
  133.  *         - you may pass in a "deleteMethod" for your data. This method
  134.  *             will be called whether or not your write method succeeds or fails.
  135.  *     + Submit your subobjects to the view
  136.  *     
  137.  *     The TQ3ObjectWriteMethod method should:
  138.  *     + Write your data format to the file using the primitives routines below.
  139.  *         - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that
  140.  *             method will be called upon exit of your write method.
  141.  *
  142.  *    Reading is less straightforward because your root object and
  143.  *    any subobjects must be read inside of your TQ3ObjectReadDataMethod. There 
  144.  *    is an implicit state contained in the file while reading, which you must 
  145.  *    be aware of. When you first enter the read method, you must physically 
  146.  *    read in your data format using the primitives routines until
  147.  *    
  148.  *    Q3File_IsEndOfData(file) == kQ3True
  149.  *    
  150.  *    Generally, your data format should be self-descriptive such that you do not
  151.  *    need to call Q3File_IsEndOfData to determine if you are done reading. 
  152.  *    However, this call is useful for determining zero-sized object or 
  153.  *    determining the end of an object's data.
  154.  *    
  155.  *    Once you have read in all the data, you may collect subobjects. A metafile
  156.  *    object ONLY has subobjects if it is in a container. The call
  157.  *    
  158.  *    Q3File_IsEndOfContainer(file)
  159.  *    
  160.  *    returns kQ3False if subobjects exist, and kQ3True if subobjects do not 
  161.  *    exist.
  162.  *    
  163.  *    At this point, you may use
  164.  *    
  165.  *    Q3File_GetNextObjectType
  166.  *    Q3File_IsNextObjectOfType
  167.  *    Q3File_ReadObject
  168.  *    Q3File_SkipObject
  169.  *    
  170.  *    to iterate through the subobjects until Q3File_IsEndOfContainer(file) 
  171.  *    is kQ3True.
  172.  * 
  173. }
  174. {
  175.  *    TQ3ObjectTraverseMethod
  176.  *
  177.  *    For "elements" (meaning "attributes, too), you will be passed NULL for 
  178.  *    object. Sorry, custom objects will be available in the next major revision.
  179.  *
  180.  *    The "data" is a pointer to your internal element data.
  181.  *
  182.  *    The view is the current traversal view.
  183. }
  184.     TQ3ObjectTraverseMethod = ProcPtr;  { FUNCTION TQ3ObjectTraverseMethod(object: TQ3Object; data: UNIV Ptr; view: TQ3ViewObject): TQ3Status; C; }
  185.  
  186.     TQ3ObjectWriteMethod = ProcPtr;  { FUNCTION TQ3ObjectWriteMethod(object: UNIV Ptr; theFile: TQ3FileObject): TQ3Status; C; }
  187.  
  188. {
  189.  *    TQ3ObjectReadDataMethod
  190.  *
  191.  *  For "elements" (meaning "attributes", too), you must allocate stack space 
  192.  *    and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  193.  *
  194.  *    Otherwise, parentObject is whatever object your element is a subobject of...
  195. }
  196.     TQ3ObjectReadDataMethod = ProcPtr;  { FUNCTION TQ3ObjectReadDataMethod(parentObject: TQ3Object; theFile: TQ3FileObject): TQ3Status; C; }
  197.  
  198.     TQ3FileVersion                        = LONGINT;
  199. {
  200. *****************************************************************************
  201.  **                                                                              **
  202.  **                                String Constants                             **
  203.  **                                                                              **
  204.  ****************************************************************************
  205. }
  206. {
  207. *****************************************************************************
  208.  **                                                                              **
  209.  **                                File Routines                                 **
  210.  **                                                                              **
  211.  ****************************************************************************
  212. }
  213. {
  214.  * Creation and accessors
  215. }
  216. FUNCTION Q3File_New: TQ3FileObject; C;
  217. FUNCTION Q3File_GetStorage(theFile: TQ3FileObject; VAR storage: TQ3StorageObject): TQ3Status; C;
  218. FUNCTION Q3File_SetStorage(theFile: TQ3FileObject; storage: TQ3StorageObject): TQ3Status; C;
  219. {
  220.  * Opening, and accessing "open" state, closing/cancelling
  221. }
  222. FUNCTION Q3File_OpenRead(theFile: TQ3FileObject; VAR mode: TQ3FileMode): TQ3Status; C;
  223. FUNCTION Q3File_OpenWrite(theFile: TQ3FileObject; mode: TQ3FileMode): TQ3Status; C;
  224. FUNCTION Q3File_IsOpen(theFile: TQ3FileObject; VAR isOpen: TQ3Boolean): TQ3Status; C;
  225. FUNCTION Q3File_GetMode(theFile: TQ3FileObject; VAR mode: TQ3FileMode): TQ3Status; C;
  226. FUNCTION Q3File_GetVersion(theFile: TQ3FileObject; VAR version: TQ3FileVersion): TQ3Status; C;
  227. FUNCTION Q3File_Close(theFile: TQ3FileObject): TQ3Status; C;
  228. FUNCTION Q3File_Cancel(theFile: TQ3FileObject): TQ3Status; C;
  229. {
  230.  * Writing (Application)
  231. }
  232. FUNCTION Q3View_StartWriting(view: TQ3ViewObject; theFile: TQ3FileObject): TQ3Status; C;
  233. FUNCTION Q3View_EndWriting(view: TQ3ViewObject): TQ3ViewStatus; C;
  234. {
  235.  * Reading (Application)
  236. }
  237. FUNCTION Q3File_GetNextObjectType(theFile: TQ3FileObject): TQ3ObjectType; C;
  238. FUNCTION Q3File_IsNextObjectOfType(theFile: TQ3FileObject; ofType: TQ3ObjectType): TQ3Boolean; C;
  239. FUNCTION Q3File_ReadObject(theFile: TQ3FileObject): TQ3Object; C;
  240. FUNCTION Q3File_SkipObject(theFile: TQ3FileObject): TQ3Status; C;
  241. FUNCTION Q3File_IsEndOfData(theFile: TQ3FileObject): TQ3Boolean; C;
  242. FUNCTION Q3File_IsEndOfContainer(theFile: TQ3FileObject; rootObject: TQ3Object): TQ3Boolean; C;
  243. FUNCTION Q3File_IsEndOfFile(theFile: TQ3FileObject): TQ3Boolean; C;
  244. {
  245.  * Idling
  246. }
  247.  
  248. TYPE
  249.     TQ3FileIdleMethod = ProcPtr;  { FUNCTION TQ3FileIdleMethod(theFile: TQ3FileObject; idlerData: UNIV Ptr): TQ3Status; C; }
  250.  
  251. FUNCTION Q3File_SetIdleMethod(theFile: TQ3FileObject; idle: TQ3FileIdleMethod; idleData: UNIV Ptr): TQ3Status; C;
  252.  
  253. TYPE
  254.     TQ3DataDeleteMethod = ProcPtr;  { PROCEDURE TQ3DataDeleteMethod(data: UNIV Ptr); C; }
  255.  
  256. {
  257.  * Custom object writing 
  258. }
  259. FUNCTION Q3View_SubmitWriteData(view: TQ3ViewObject; size: TQ3Size; data: UNIV Ptr; deleteData: TQ3DataDeleteMethod): TQ3Status; C;
  260. {
  261. *****************************************************************************
  262.  **                                                                              **
  263.  **                                Primitives Routines                             **
  264.  **                                                                              **
  265.  ****************************************************************************
  266. }
  267. FUNCTION Q3Uns8_Read(VAR data: TQ3Uns8; theFile: TQ3FileObject): TQ3Status; C;
  268. FUNCTION Q3Uns8_Write(data: ByteParameter; theFile: TQ3FileObject): TQ3Status; C;
  269. FUNCTION Q3Uns16_Read(VAR data: TQ3Uns16; theFile: TQ3FileObject): TQ3Status; C;
  270. FUNCTION Q3Uns16_Write(data: TQ3Uns16; theFile: TQ3FileObject): TQ3Status; C;
  271. FUNCTION Q3Uns32_Read(VAR data: TQ3Uns32; theFile: TQ3FileObject): TQ3Status; C;
  272. FUNCTION Q3Uns32_Write(data: TQ3Uns32; theFile: TQ3FileObject): TQ3Status; C;
  273. FUNCTION Q3Int32_Read(VAR data: TQ3Int32; theFile: TQ3FileObject): TQ3Status; C;
  274. FUNCTION Q3Int32_Write(data: TQ3Int32; theFile: TQ3FileObject): TQ3Status; C;
  275. FUNCTION Q3Uns64_Read(VAR data: TQ3Uns64; theFile: TQ3FileObject): TQ3Status; C;
  276. FUNCTION Q3Uns64_Write(data: TQ3Uns64; theFile: TQ3FileObject): TQ3Status; C;
  277. FUNCTION Q3Float32_Read(VAR data: TQ3Float32; theFile: TQ3FileObject): TQ3Status; C;
  278. FUNCTION Q3Float32_Write(data: TQ3Float32; theFile: TQ3FileObject): TQ3Status; C;
  279. FUNCTION Q3Float64_Read(VAR data: TQ3Float64; theFile: TQ3FileObject): TQ3Status; C;
  280. FUNCTION Q3Float64_Write(data: TQ3Float64; theFile: TQ3FileObject): TQ3Status; C;
  281. FUNCTION Q3Size_Pad(size: TQ3Size): TQ3Size; C;
  282. {
  283.  * Pass a pointer to a buffer of kQ3StringMaximumLength bytes
  284. }
  285. FUNCTION Q3String_Read(data: CStringPtr; VAR length: LONGINT; theFile: TQ3FileObject): TQ3Status; C;
  286. FUNCTION Q3String_Write(data: ConstCStringPtr; theFile: TQ3FileObject): TQ3Status; C;
  287. {
  288.  * This call will read Q3Size_Pad(size) bytes,
  289.  *    but only place size bytes into data.
  290. }
  291. FUNCTION Q3RawData_Read(VAR data: UInt8; size: LONGINT; theFile: TQ3FileObject): TQ3Status; C;
  292. {
  293.  * This call will write Q3Size_Pad(size) bytes,
  294.  *    adding 0's to pad to the nearest 4 byte boundary.
  295. }
  296. FUNCTION Q3RawData_Write({CONST}VAR data: UInt8; size: LONGINT; theFile: TQ3FileObject): TQ3Status; C;
  297. {
  298. *****************************************************************************
  299.  **                                                                              **
  300.  **                        Convenient Primitives Routines                         **
  301.  **                                                                              **
  302.  ****************************************************************************
  303. }
  304. FUNCTION Q3Point2D_Read(VAR point2D: TQ3Point2D; theFile: TQ3FileObject): TQ3Status; C;
  305. FUNCTION Q3Point2D_Write({CONST}VAR point2D: TQ3Point2D; theFile: TQ3FileObject): TQ3Status; C;
  306. FUNCTION Q3Point3D_Read(VAR point3D: TQ3Point3D; theFile: TQ3FileObject): TQ3Status; C;
  307. FUNCTION Q3Point3D_Write({CONST}VAR point3D: TQ3Point3D; theFile: TQ3FileObject): TQ3Status; C;
  308. FUNCTION Q3RationalPoint3D_Read(VAR point3D: TQ3RationalPoint3D; theFile: TQ3FileObject): TQ3Status; C;
  309. FUNCTION Q3RationalPoint3D_Write({CONST}VAR point3D: TQ3RationalPoint3D; theFile: TQ3FileObject): TQ3Status; C;
  310. FUNCTION Q3RationalPoint4D_Read(VAR point4D: TQ3RationalPoint4D; theFile: TQ3FileObject): TQ3Status; C;
  311. FUNCTION Q3RationalPoint4D_Write({CONST}VAR point4D: TQ3RationalPoint4D; theFile: TQ3FileObject): TQ3Status; C;
  312. FUNCTION Q3Vector2D_Read(VAR vector2D: TQ3Vector2D; theFile: TQ3FileObject): TQ3Status; C;
  313. FUNCTION Q3Vector2D_Write({CONST}VAR vector2D: TQ3Vector2D; theFile: TQ3FileObject): TQ3Status; C;
  314. FUNCTION Q3Vector3D_Read(VAR vector3D: TQ3Vector3D; theFile: TQ3FileObject): TQ3Status; C;
  315. FUNCTION Q3Vector3D_Write({CONST}VAR vector3D: TQ3Vector3D; theFile: TQ3FileObject): TQ3Status; C;
  316. FUNCTION Q3Matrix4x4_Read(VAR matrix4x4: TQ3Matrix4x4; theFile: TQ3FileObject): TQ3Status; C;
  317. FUNCTION Q3Matrix4x4_Write({CONST}VAR matrix4x4: TQ3Matrix4x4; theFile: TQ3FileObject): TQ3Status; C;
  318. FUNCTION Q3Tangent2D_Read(VAR tangent2D: TQ3Tangent2D; theFile: TQ3FileObject): TQ3Status; C;
  319. FUNCTION Q3Tangent2D_Write({CONST}VAR tangent2D: TQ3Tangent2D; theFile: TQ3FileObject): TQ3Status; C;
  320. FUNCTION Q3Tangent3D_Read(VAR tangent3D: TQ3Tangent3D; theFile: TQ3FileObject): TQ3Status; C;
  321. FUNCTION Q3Tangent3D_Write({CONST}VAR tangent3D: TQ3Tangent3D; theFile: TQ3FileObject): TQ3Status; C;
  322. {     This call affects only text Files - it is a no-op in binary files  }
  323. FUNCTION Q3Comment_Write(comment: CStringPtr; theFile: TQ3FileObject): TQ3Status; C;
  324. {
  325. *****************************************************************************
  326.  **                                                                              **
  327.  **                                Unknown Object                                 **
  328.  **                                                                              **
  329.  **        Unknown objects are generated when reading files which contain         **
  330.  **        custom data which has not been registered in the current             **
  331.  **        instantiation of QuickDraw 3D.                                         **
  332.  **                                                                              **
  333.  ****************************************************************************
  334. }
  335. FUNCTION Q3Unknown_GetType(unknownObject: TQ3UnknownObject): TQ3ObjectType; C;
  336. FUNCTION Q3Unknown_GetDirtyState(unknownObject: TQ3UnknownObject; VAR isDirty: TQ3Boolean): TQ3Status; C;
  337. FUNCTION Q3Unknown_SetDirtyState(unknownObject: TQ3UnknownObject; isDirty: TQ3Boolean): TQ3Status; C;
  338. {
  339. *****************************************************************************
  340.  **                                                                              **
  341.  **                            Unknown Text Routines                             **
  342.  **                                                                              **
  343.  ****************************************************************************
  344. }
  345.  
  346. TYPE
  347.     TQ3UnknownTextDataPtr = ^TQ3UnknownTextData;
  348.     TQ3UnknownTextData = RECORD
  349.         objectName:                CStringPtr;                                {  '\0' terminated  }
  350.         contents:                CStringPtr;                                {  '\0' terminated  }
  351.     END;
  352.  
  353. FUNCTION Q3UnknownText_GetData(unknownObject: TQ3UnknownObject; VAR unknownTextData: TQ3UnknownTextData): TQ3Status; C;
  354. FUNCTION Q3UnknownText_EmptyData(VAR unknownTextData: TQ3UnknownTextData): TQ3Status; C;
  355. {
  356. *****************************************************************************
  357.  **                                                                              **
  358.  **                            Unknown Binary Routines                             **
  359.  **                                                                              **
  360.  ****************************************************************************
  361. }
  362.  
  363. TYPE
  364.     TQ3UnknownBinaryDataPtr = ^TQ3UnknownBinaryData;
  365.     TQ3UnknownBinaryData = RECORD
  366.         objectType:                TQ3ObjectType;
  367.         size:                    LONGINT;
  368.         byteOrder:                TQ3Endian;
  369.         contents:                CStringPtr;
  370.     END;
  371.  
  372. FUNCTION Q3UnknownBinary_GetData(unknownObject: TQ3UnknownObject; VAR unknownBinaryData: TQ3UnknownBinaryData): TQ3Status; C;
  373. FUNCTION Q3UnknownBinary_EmptyData(VAR unknownBinaryData: TQ3UnknownBinaryData): TQ3Status; C;
  374. {
  375. *****************************************************************************
  376.  **                                                                              **
  377.  **                            ViewHints routines                                 **
  378.  **                                                                              **
  379.  **        ViewHints are an object in a metafile to give you some hints on how     **
  380.  **        to render a scene.    You may create a view with any of the objects     **
  381.  **        retrieved from it, or you can just throw it away.                     **
  382.  **                                                                              **
  383.  **        To write a view hints to a file, create a view hints object from a     **
  384.  **        view and write the view hints.                                         **
  385.  **                                                                              **
  386.  ****************************************************************************
  387. }
  388. FUNCTION Q3ViewHints_New(view: TQ3ViewObject): TQ3ViewHintsObject; C;
  389. FUNCTION Q3ViewHints_SetRenderer(viewHints: TQ3ViewHintsObject; renderer: TQ3RendererObject): TQ3Status; C;
  390. FUNCTION Q3ViewHints_GetRenderer(viewHints: TQ3ViewHintsObject; VAR renderer: TQ3RendererObject): TQ3Status; C;
  391. FUNCTION Q3ViewHints_SetCamera(viewHints: TQ3ViewHintsObject; camera: TQ3CameraObject): TQ3Status; C;
  392. FUNCTION Q3ViewHints_GetCamera(viewHints: TQ3ViewHintsObject; VAR camera: TQ3CameraObject): TQ3Status; C;
  393. FUNCTION Q3ViewHints_SetLightGroup(viewHints: TQ3ViewHintsObject; lightGroup: TQ3GroupObject): TQ3Status; C;
  394. FUNCTION Q3ViewHints_GetLightGroup(viewHints: TQ3ViewHintsObject; VAR lightGroup: TQ3GroupObject): TQ3Status; C;
  395. FUNCTION Q3ViewHints_SetAttributeSet(viewHints: TQ3ViewHintsObject; attributeSet: TQ3AttributeSet): TQ3Status; C;
  396. FUNCTION Q3ViewHints_GetAttributeSet(viewHints: TQ3ViewHintsObject; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  397. FUNCTION Q3ViewHints_SetDimensionsState(viewHints: TQ3ViewHintsObject; isValid: TQ3Boolean): TQ3Status; C;
  398. FUNCTION Q3ViewHints_GetDimensionsState(viewHints: TQ3ViewHintsObject; VAR isValid: TQ3Boolean): TQ3Status; C;
  399. FUNCTION Q3ViewHints_SetDimensions(viewHints: TQ3ViewHintsObject; width: LONGINT; height: LONGINT): TQ3Status; C;
  400. FUNCTION Q3ViewHints_GetDimensions(viewHints: TQ3ViewHintsObject; VAR width: LONGINT; VAR height: LONGINT): TQ3Status; C;
  401. FUNCTION Q3ViewHints_SetMaskState(viewHints: TQ3ViewHintsObject; isValid: TQ3Boolean): TQ3Status; C;
  402. FUNCTION Q3ViewHints_GetMaskState(viewHints: TQ3ViewHintsObject; VAR isValid: TQ3Boolean): TQ3Status; C;
  403. FUNCTION Q3ViewHints_SetMask(viewHints: TQ3ViewHintsObject; {CONST}VAR mask: TQ3Bitmap): TQ3Status; C;
  404. FUNCTION Q3ViewHints_GetMask(viewHints: TQ3ViewHintsObject; VAR mask: TQ3Bitmap): TQ3Status; C;
  405. {  Call Q3Bitmap_Empty when done with the mask     }
  406. FUNCTION Q3ViewHints_SetClearImageMethod(viewHints: TQ3ViewHintsObject; clearMethod: TQ3DrawContextClearImageMethod): TQ3Status; C;
  407. FUNCTION Q3ViewHints_GetClearImageMethod(viewHints: TQ3ViewHintsObject; VAR clearMethod: TQ3DrawContextClearImageMethod): TQ3Status; C;
  408. FUNCTION Q3ViewHints_SetClearImageColor(viewHints: TQ3ViewHintsObject; {CONST}VAR color: TQ3ColorARGB): TQ3Status; C;
  409. FUNCTION Q3ViewHints_GetClearImageColor(viewHints: TQ3ViewHintsObject; VAR color: TQ3ColorARGB): TQ3Status; C;
  410. {$ALIGN RESET}
  411. {$POP}
  412.  
  413. {$SETC UsingIncludes := QD3DIOIncludes}
  414.  
  415. {$ENDC} {__QD3DIO__}
  416.  
  417. {$IFC NOT UsingIncludes}
  418.  END.
  419. {$ENDC}
  420.